package  
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import Levels.Level;
	import Levels.Level1;
	import Levels.Level2;
	import Levels.Level3;
	/**
	 * ...
	 * @author Leandro Moreira Lopes
	 */
	public class Main extends MovieClip
	{
		public var MC_tela				:MovieClip;				/** * MC_tela criado para adicionar os MCs do jogo em geral */
		public var MC_telaMenu			:MovieClip;				/** * MC_telaMenu criado apenas para adicionar os MCs dos menus */
		public var mainMenu				:Menu;					/** * instanciando a classe Menu para acessá-la */
		private var LV_fase1			:Level1;				/** * instanciando os Levels */
		private var LV_fase2			:Level2;
		private var LV_fase3			:Level3;
		
		public var _levelState			:String;				/** * variavel string para os levels (pública porque é alterada pela classe menu) */
		
		public var _nave1				:String;				/** * variavel com o nome da nave do jogador1*/
		public var _nave2				:String;				/** * variavel com o nome da nave do jogador2*/
		
		public var pontoJ1				:uint;					/** * variavel de pontos do jogador 1*/
		public var pontoJ2				:uint;					/** * variavel de pontos do jogador 2*/
		
		private static var _instance	:Main;
		
		public static function getInstance():Main
		{
			return _instance;
		}
		
		public function Main() 
		{
			_instance = this;
			MC_telaMenu = new MovieClip();					
			addChild(MC_telaMenu);
			
			_levelState = "Level1";								/** * definindo valores iniciais pré-estabelecidos (sao trocados durante o jogo)*/
			
			_nave1 = "XWing";
			_nave2 = "TieInterceptor";
			
			pontoJ1 = 0;										
			pontoJ2 = 0;
			
			mainMenu = new Menu();								/** * Main chama primeiro a classe Menu */
			mainMenu.menuInicial();
		}
		public function iniciarJogo():void
		{
			MC_tela = new MovieClip();
			addChild(MC_tela);
			
			
			
			addEventListener(Event.ENTER_FRAME, update, false, 0, true);
			desenharTela();
		}
		
		public function desenharTela():void						/** * função desenharTela será de acordo com o levels escolhido na variavel _levelState*/
		{
			switch (_levelState)
			{
				case "Level1":
					LV_fase1 = new Level1();
					LV_fase1.desenharTela();
					break;
				
				case "Level2":
					LV_fase2 = new Level2();
					LV_fase2.desenharTela();
					break;
					
				case "Level3":
					LV_fase3 = new Level3();
					LV_fase3.desenharTela();
					break;
			}
		}
		
		public function update(e:Event):void					/** * função update será de acordo com o levels escolhido na variavel _levelState*/
		{
			switch (_levelState)
			{
				case "Level1":
					LV_fase1.update();
					break;
					
				case "Level2":
					LV_fase2.update();
					break;
					
				case "Level3":
					LV_fase3.update();
					break;
			}
		}
	}

}